An Aztec code is a type of two-dimensional barcode invented by Andrew Longacre, Jr. and Robert Hussey in 1995. The Aztec code is named after an Aztec pyramid having a resemblance to a central finder pattern. The finder pattern includes a center square and a predefined number of concentric squares around the center square. If the center square is enclosed by two thick black concentric squares, it is known as a compact Aztec barcode. If there are three thick black squares around the center square, then it is known as a full Aztec barcode. The square enclosing the finder pattern with smaller squares externally protruding from each of the corners is used as configurations to encode the data, such as a size of a symbol and length of a message encoded in the Aztec barcode. Actual information is encoded beyond the finder pattern squares in form of data blocks that are organized in layers/squares around the finder pattern. The data blocks are read in sequence within layers.
Aztec code uses less space than other matrix barcodes as it does not need a surrounding quiet zone (white space). The smallest Aztec code symbol is 15×15 modules square, and the largest Aztec code symbol is 151×151. The smallest Aztec code symbol encodes 13 numeric or 12 alphabetic characters, while the largest Aztec code symbol encodes 3832 numeric or 7067 alphabetic characters, or 1914 bytes of data. Module size in terms of pixels can vary for different Aztec barcodes depending on the resolution at which the Aztec barcodes are scanned. However, if module size of an Aztec barcode is less than two pixels, then complexity of processing and encoding such Aztec barcode becomes more challenging.
Even though localization or detecting the Aztec barcode is intended to be fast and simple because of the finder pattern (bull's eye) present at the center of the barcode, detecting barcodes from images using hand held devices can be particularly challenging when the barcode pixel resolution is low or the pattern distorted. Moreover, when the image of the Aztec barcode is captured in low resolution, noise is added to the captured image that makes the Aztec barcode unrecognizable and undetectable to a handheld device, especially when the barcode resolution is less than two pixels, i.e., the minimal module size is less than two pixels.
Therefore, there exists a need for detecting and localizing two-dimensional Aztec codes in noisy and/or low-resolution images. Further, there is a need for systems, methods, and apparatuses that are capable of detecting Aztec codes from low-resolution images having artificial noise and other interfering data.